1
Mappatura dell'Hardware sul Software: Versioni della Capacità di Calcolo
AI021Lesson 5
00:00

La Capacità di Calcolo (CC) agisce come ponte di versionamento tra architettura virtuale (PTX) e architettura reale (SASS/Binario). Gli sviluppatori usano nvcc per mirare piattaforme specifiche, che vanno da piattaforme desktop/server a piattaforme incorporate, attraverso modelli di sistema operativo come Linux 64-bit (LP64) oppure Windows 64-bit (LLP64).

1. Architetture Virtuali vs. Reali

Il toolkit CUDA supporta le architetture GPU delle ultime due versioni principali, riportate in Tabella 29: Supporto delle funzionalità nelle Capacità di Calcolo (da 7.5 a 12.x). Definiamo i mapping usando flag come: nvcc --generate-code arch=compute_80,code=sm_90 prog.cu. Per obiettivi futuri, si usano flag come nvcc -arch=sm_100 o varianti specializzate come nvcc -arch=sm_100a vengono utilizzati.

2. Gerarchia dei Macro

Il compilatore usa __CUDA_ARCH__ per ramificare il codice. Il macro __CUDA_ARCH__ è definito solo nel codice dispositivo (ad esempio, __device__, __global__). Un controllo più fine è fornito da __CUDA_ARCH_SPECIFIC__ e __CUDA_ARCH_FAMILY_SPECIFIC__. Alcune funzionalità, come Memoria condivisa distribuita o specifici payload NaN, richiedono Capacità di Calcolo 9.0+ oppure Capacità di Calcolo 10.0 e successive.

3. Limiti e vincoli numerici

La precisione varia in base alla CC; ad esempio, il trattamento dei numeri sottili garantisce $2^{-16382} \approx 3.36 \cdot 10^{-4932}$. I limiti hardware come CUDA_DEVICE_MAX_COPY_CONNECTIONS=16 o il direttiva .maxnreg PTX sono rigorosamente imposti in base alla versione CC di destinazione.

main.py
TERMINALbash — 80x24
> Ready. Click "Run" to execute.
>